package persistence.model;

import persistence.dao.ServiceDAO;
import persistence.db.DataSet;

public class Service extends AbstractModel {
	
	private int nbPeriodes;
	private int fk_service_see;
	private int fk_service_type_heure;
	private int fk_service_enseignant;
	private int fk_service_groupe;
	
	public Service() {
		setDao(new ServiceDAO(this));
	}
	
	/**
	 * Constructeur d'un service
	 * @param id identifiant d'un service
	 */
	public Service(int id) {
		this();
		setId(id);
	}
	
	/**
	 * Construction d'un service
	 * @param id identifiant d'un service
	 * @param nbPer nombre de Periode dans le service
	 * @param see identifiant du see correspondant
	 * @param typeHeure identifiant du type d'heure correspondant
	 * @param enseignant identifiant de l'enseignant correspondant
	 * @param groupe idetifiant du groupe correspondant
	 */
	public Service(int id, int nbPer, int see, int typeHeure, int enseignant, int groupe) {
		this(id);
		nbPeriodes = nbPer;
		this.fk_service_see = see;
		this.fk_service_type_heure = typeHeure;
		this.fk_service_enseignant = enseignant;
		this.fk_service_groupe = groupe;
	}

	public int getNbPeriodes() {
		return nbPeriodes;
	}

	public void setNbPeriodes(int nbPeriodes) {
		this.nbPeriodes = nbPeriodes;
	}
	
	public int getFk_service_see() {
		return fk_service_see;
	}

	public void setFk_service_see(int fkServiceSee) {
		fk_service_see = fkServiceSee;
	}

	public int getFk_service_type_heure() {
		return fk_service_type_heure;
	}

	public void setFk_service_type_heure(int fkServiceTypeHeure) {
		fk_service_type_heure = fkServiceTypeHeure;
	}

	public int getFk_service_enseignant() {
		return fk_service_enseignant;
	}

	public void setFk_service_enseignant(int fkServiceEnseignant) {
		fk_service_enseignant = fkServiceEnseignant;
	}

	public int getFk_service_groupe() {
		return fk_service_groupe;
	}

	public void setFk_service_groupe(int fkServiceGroupe) {
		fk_service_groupe = fkServiceGroupe;
	}
	
	public SEE getSEE() {
		return (SEE) SEE.all().get(fk_service_see);
	}

	public Groupe getGroupe() {
		return (Groupe) Groupe.all().get(fk_service_groupe);
	}
	
	public Enseignant getEnseignant() {
		return (Enseignant) Enseignant.all().get(fk_service_enseignant);
	}

	public TypeHeure getTypeHeure() {
		return (TypeHeure) TypeHeure.all().get(fk_service_type_heure);
	}

	public static DataSet all() {
		ServiceDAO serviceDAO = new ServiceDAO();
		return serviceDAO.all();
	}
}
